package fr.grobim.hangovers.gestionBudget.services.comptes.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import fr.grobim.hangovers.gestionBudget.beans.comptes.Membre;
import fr.grobim.hangovers.gestionBudget.daos.comptes.MembreDao;
import fr.grobim.hangovers.gestionBudget.services.comptes.MembreService;

@Service
@Transactional(readOnly=true)
public class MembreServiceImpl implements MembreService {
	
	@Autowired
	private MembreDao membreDao;

	@Override
	public Membre connexion(String login, String motDePasse) {
		return membreDao.consulteMembreParIdentifiants(login, motDePasse);
	}

	@Override
	public Membre connexion(Membre membre) {
		Membre membreRetour = null;
		if (StringUtils.isNotEmpty(membre.getCompteUtilisateur().getLogin()) && StringUtils.isNotEmpty(membre.getCompteUtilisateur().getMotDePasse())) {
			membreRetour = membreDao.consulteMembreParIdentifiants(membre.getCompteUtilisateur().getLogin(), membre.getCompteUtilisateur().getMotDePasse());
		}
		return membreRetour;
	}

	@Override
	public Membre obtenirMembre(Integer id) {
		return membreDao.consulterParId(id);
	}

	@Override
	public Membre obtenirMembre(Membre membre) {
		return obtenirMembre(membre.getId());
	}

	@Override
	public List<Membre> listerTousMembres() {
		return membreDao.listerTous();
	}

	@Override
	public List<Membre> listerTousMembresInternes() {
		return this.membreDao.listerTousMembresInternes();
	}

	@Override
	@Transactional(readOnly = false)
	public void creerOuMettreAJourMembre(Membre membre) {
		this.membreDao.creerOuModifier(membre);
	}

	@Override
	@Transactional(readOnly = false)
	public void supprimerMembre(Integer idMembre) {
		this.membreDao.supprimer(this.obtenirMembre(idMembre));
	}

	@Override
	@Transactional(readOnly = false)
	public void supprimerMembre(Membre membre) {
		this.supprimerMembre(membre.getId());
	}

	@Override
	public Boolean existeMembreAvecLogin(String login) {
		return this.membreDao.existeMembreAvecLogin(login);
	}

	@Override
	public Boolean existeMembreAvecSurnom(String surnom) {
		return this.membreDao.existeMembreAvecSurnom(surnom);
	}

}
